
#ifndef _TTG_DEVICES_IDENTIFIERS_
#define _TTG_DEVICES_IDENTIFIERS_
#include "Common/Definitions.h"

namespace ttg
{
	namespace devices
	{
		//Represents unquie ID of device.
		typedef ttg::math::uint64 DeviceID;
		//Represents unique ID of API (for owner device).
		typedef ttg::math::uint64 ApiID;
		//Determines logical device as DeviceID + ApiID.
		class LogicalDevice
		{
			private:
				DeviceID device;
				ApiID api;
			public:
				//Creates default device type.
				inline LogicalDevice()
				{
					this->device = 0;		//CPU();
					this->api = 0;			//CPU::x86();
				}
				//Creates bundle with required device + requred api.
				inline LogicalDevice(DeviceID device, ApiID api)
				{
					this->device = device;
					this->api = api;
				}
				//Returns identifier of the used device.
				inline DeviceID getDevice() const
				{ return device; }
				//Returns identifier of the used API.
				inline ApiID getAPI() const
				{ return api; }
		};
	}
}

#endif
